// 给定一个未排序的整数数组 nums ，找出数字连续的最长序列（不要求序列元素在原数组中连续）的长度。

// 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/longest-consecutive-sequence
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。


// 执行用时：
// 76 ms
// , 在所有 C++ 提交中击败了
// 57.63%
// 的用户
// 内存消耗：
// 30.1 MB
// , 在所有 C++ 提交中击败了
// 44.39%
// 的用户

// 看了题解，空间换时间

#include<bits/stdc++.h>
#include<string>
#include<vector>
#include<unordered_set>
#include<set>
#include<queue>
using namespace std;


class Solution {
public:
    int longestConsecutive(vector<int>& nums) {

        unordered_set<int> temp;
        int len = nums.size();
        for(int i=0;i<len;i++){
            temp.insert(nums[i]);
        }
        int res = 0;
        for(auto x:temp){
            if(!temp.count(x-1) && temp.count(x)){
                int imax = 0;
                auto y = x;
                while(temp.count(y)){
                    imax++;
                    y++;
                }
                res = max(res,imax);
            }
        }
        return res;
    }
};